package com.demo.practiceui;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.viewpager2.widget.ViewPager2;

/**
 * 主界面 - 使用ViewPager2左右滑动展示所有自定义View
 * 
 * 本项目包含15个自定义View示例，分为三大类：
 * 1. 数据可视化类（5个）：柱状图、环形图、仪表盘、雷达图、热力图
 * 2. 交互控件类（5个）：进度条、滑动解锁、倒计时、开关、拖拽排序
 * 3. 动画特效类（5个）：波浪、粒子、加载圆环、仪表盘动画、文字动效
 */
public class MainActivity extends Activity {

    private ViewPager2 viewPager;
    private TextView tvPageIndicator;
    private TextView tvPageTitle;
    private TextView btnPrevious;
    private TextView btnNext;
    private ViewPagerAdapter adapter;
    
    private int currentPosition = 0;  // 当前页面位置

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 初始化控件
        viewPager = findViewById(R.id.viewPager);
        tvPageIndicator = findViewById(R.id.tvPageIndicator);
        tvPageTitle = findViewById(R.id.tvPageTitle);
        btnPrevious = findViewById(R.id.btnPrevious);
        btnNext = findViewById(R.id.btnNext);

        // 设置适配器
        adapter = new ViewPagerAdapter(this);
        viewPager.setAdapter(adapter);
        
        // 关闭预加载，避免多个动画同时运行
        viewPager.setOffscreenPageLimit(1);

        // 监听页面切换
        viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
            @Override
            public void onPageSelected(int position) {
                super.onPageSelected(position);
                
                // 暂停之前页面的动画
                adapter.pauseAnimations(currentPosition);
                
                // 更新当前位置
                currentPosition = position;
                
                // 恢复当前页面的动画
                adapter.resumeAnimations(currentPosition);
                
                updatePageInfo(position);
            }
        });

        // 上一个按钮
        btnPrevious.setOnClickListener(v -> {
            int currentItem = viewPager.getCurrentItem();
            if (currentItem > 0) {
                viewPager.setCurrentItem(currentItem - 1, true);
            } else {
                Toast.makeText(MainActivity.this, "已经是第一个了", Toast.LENGTH_SHORT).show();
            }
        });

        // 下一个按钮
        btnNext.setOnClickListener(v -> {
            int currentItem = viewPager.getCurrentItem();
            if (currentItem < adapter.getItemCount() - 1) {
                viewPager.setCurrentItem(currentItem + 1, true);
            } else {
                Toast.makeText(MainActivity.this, "已经是最后一个了", Toast.LENGTH_SHORT).show();
            }
        });

        // 初始化第一页信息
        updatePageInfo(0);
        
        // 确保第一页的动画开始运行
        viewPager.post(() -> adapter.resumeAnimations(0));
    }

    /**
     * 更新页面信息
     */
    private void updatePageInfo(int position) {
        // 更新页码
        tvPageIndicator.setText((position + 1) + " / " + adapter.getItemCount());

        // 更新标题
        ViewPagerAdapter.PageInfo pageInfo = adapter.getPageInfo(position);
        if (pageInfo != null) {
            tvPageTitle.setText(pageInfo.category + " - " + pageInfo.title);
        }

        // 更新按钮状态
        btnPrevious.setEnabled(position > 0);
        btnNext.setEnabled(position < adapter.getItemCount() - 1);

        btnPrevious.setAlpha(position > 0 ? 1.0f : 0.3f);
        btnNext.setAlpha(position < adapter.getItemCount() - 1 ? 1.0f : 0.3f);
    }
    
    @Override
    protected void onPause() {
        super.onPause();
        // 应用进入后台时，暂停所有动画
        adapter.pauseAnimations(currentPosition);
    }
    
    @Override
    protected void onResume() {
        super.onResume();
        // 应用回到前台时，恢复当前页面的动画
        adapter.resumeAnimations(currentPosition);
    }
}
